home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
5_5.lha
/
5_5
/
5_5e5.c
< prev
next >
Wrap
Text File
|
1993-08-08
|
912b
|
46 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
tatic tree* prim(istream& input)
switch (curr_tok.type)
{
case NUMBER:
number_leaf* retn =
new number_leaf(curr_tok.value);
get_token(input); // skip number
return retn;
case MINUS:
unary_minus_op *retm = new unary_minus_op;
get_token(input); // skip '-'
retm->left = prim(input);
return retm;
case LP:
lparen_op *retlp = new lparen_op;
get_token(input); // skip '('
retlp->left = get_expr(input);
if (curr_tok.type != RP)
{
error(") expected");
break;
}
get_token(input); // skip ')'
return retlp;
case END:
error("end of expression unexpected");
break;
default:
error("unknown type within tree");
break;
}
// error case
number_leaf *ret = new number_leaf(0);
return ret;